package com.ruoyi.back.service.v3

import com.baomidou.mybatisplus.extension.service.IService
import com.ruoyi.app.common.Data
import com.ruoyi.app.common.PageData
import com.ruoyi.back.domain.v3.TemplateReport
import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiModelProperty
import java.util.*

interface TemplateReportService : IService<TemplateReport> {


    @ApiModel("模板举报搜索参数")
    data class TemplateReportSearchDto(

        @ApiModelProperty("用户id或者用户名")
        var userInfo: String,

        @ApiModelProperty("描述词")
        var descText: String? = null,

        @ApiModelProperty("举报开始时间")
        var reportBeginDate: String? = null,

        @ApiModelProperty("举报结束时间")
        var reportEndDate: String? = null,
    )

    @ApiModel("模板举报列表")
    data class TemplateReportListVo(

        @ApiModelProperty("id")
        var id: Long? = null,

        @ApiModelProperty("举报内容")
        var reason: String? = null,

        @ApiModelProperty("作品id")
        var recordId: String? = null,

        @ApiModelProperty("作者id")
        var username: String? = null,

        @ApiModelProperty("作者用户名")
        var userInfoId: String? = null,

        @ApiModelProperty("绘画")
        var pics: String? = null,

        @ApiModelProperty("描述词")
        var descText: String? = null,

        @ApiModelProperty("0: 未处理 1: 已经下架 2: 已经忽略")
        var status: Int? = 0,

        @ApiModelProperty("举报时间")
        var createTime: String? = null,
    )

    @ApiModel("审核模板参数")
    data class CheckTemplateDto(

        @ApiModelProperty("id")
        var id: Long? = null,

        @ApiModelProperty("1: 下架 2: 忽略")
        var status: Int? = 0,
    )

    @ApiModel("审核模板参数")
    data class RecordReportDto(

        @ApiModelProperty("作品id")
        var recordId: Long? = null,

        @ApiModelProperty("举报原因")
        var reportContent: String? = null,

    )

    /**
     * 提交模板举报
     */
    fun saveTemplateReport(recordReportDto: RecordReportDto): Data<Boolean>


    /**
     * 模板举报分页
     */
    fun templateReportPage(templateReportSearchDto: TemplateReportSearchDto): PageData<TemplateReportListVo>

    /**
     * 审核模板举报
     */
    fun checkTemplateReport(checkTemplateDto: CheckTemplateDto): Data<Boolean>

    /**
     * 移除模板举报
     */
    fun removeCheckTemplate(ids: String): Data<Boolean>

}